package com.ybybh.gamecenter.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


@Controller
public class GuessWordGameController {

    //生成一个谜语题库
    private static List<String> gwDic = new ArrayList<>();

    static { //初始化向题库中填充测试数据
        gwDic.add("绿衣夜行不着急，白天举头望鸡飞。——猫头鹰");
        gwDic.add("一个小姑娘，水中倒影忙，水面荡漾起，她也跟着忙。——荷花");
        gwDic.add("红口袋，绿口袋，有人害怕，有人爱。——辣椒");
        gwDic.add("头上两只角，身上有甲壳，不是牛也不是马，却能水里游。——乌龟");
        gwDic.add("白里透红，不是花，也不是果，酸甜可口，大家都喜欢。——草莓");
        gwDic.add("一根木棍长又细，上头站着个小矮子，有脚不会走，有嘴不会吃。——笔");
        gwDic.add("远看像座山，近看像座塔，夜里不见影，白天不起雾。——灯塔");
        gwDic.add("一个圆球，绿油油，切开里面红彤彤，味道酸甜真可口。——西瓜");
        gwDic.add("一个小矮人，皮肤黑黝黝，长在土里头，全身都是宝。——花生");
        gwDic.add("一根藤上挂满果，有红有绿真好看，味道酸甜又可口，大家都爱把它摘。——葡萄");
    }

    //声明一个随机的工具类
    private static Random random = new Random();
    //声明一个代表当前的字谜
    private static String currentGw = "";
    //声明一个代表游戏的游玩结果
    private static String resultMessage = "";

    //声明一个代表猜字游戏的累加猜测数量
    private static int guessCount = 0;
    //声明一个代表猜字游戏是否结束的标识
    private static boolean isFinish = false;

    @RequestMapping("/gwplay")
    public ModelAndView toGwPlay(String guessword) {

        if (isFinish) {
            resultMessage = "游戏结束！！，<a href='/gw'>再来一局</a>";
        } else if (guessCount == 5) {
            resultMessage = "猜错次数已达上限，游戏失败！！，<a href='/gw'>再来一局</a>";
            isFinish = true;
        } else {
            guessCount++;
            String daan = currentGw.split("——")[1];
            if (guessword.equals(daan)) {
                resultMessage = "恭喜你，猜对了！！，<a href='/gw'>再来一局</a>";
                isFinish = true;
            } else {
                resultMessage = "猜错了，请你继续猜！！";
            }
        }
        return getModelAndView();

    }

    private ModelAndView getModelAndView() {
        String zm = currentGw.split("——")[0];
        String daan = currentGw.split("——")[1];
        ModelAndView modelAndView = new ModelAndView("guessword");
        modelAndView.addObject("zm", zm);
        modelAndView.addObject("daan", daan);
        modelAndView.addObject("resultMessage", resultMessage);
        return modelAndView;
    }

    @RequestMapping("/gw")
    public ModelAndView toGwHtml() {

        resultMessage = "";
        guessCount = 0;
        isFinish = false;
        int index = random.nextInt(gwDic.size());
        currentGw = gwDic.get(index);
        return getModelAndView();
    }


}
